
/**
 * @author LKQ
 * @date 2022/2/25 14:23
 * @description
 */
public class Solution {
    public static void main(String[] args) {

    }
    public boolean flipEquiv(TreeNode root1, TreeNode root2) {
        if(root1 == root2) {
            // root1 和 root2都是null, 那么两者相等返回true
            return true;
        }
        if (root1 == null || root2 == null || root1.val != root2.val) {
            // 有其中一个为空，但另一个不为空，或 两个都不为空，但是值不相等，肯定无法翻转
            return false;
        }
        // root值相等，还需要判断子节点是否相等，有两种情况，r1左-r2左，r1右-r2右 || r1左-r2右, r1右-r2左
        return (flipEquiv(root1.left, root2.right) && flipEquiv(root1.right, root2.left) ||
                flipEquiv(root1.left, root2.left) && flipEquiv(root1.right, root2.right));
    }
}
